#ifndef _DATAFRAME
#define _DATAFRAME

#define FRAME_FLAG_LENGTH   1
#define FRAME_LENGTH_LENGTH 8
#define FRAME_LENGTH        FRAME_FLAG_LENGTH+FRAME_LENGTH_LENGTH
#include "net_tool.h"
class DataFrame {
    public:
        // 操作标识位
        unsigned char flag;
        // 负载数据长度
        unsigned long long length;
        // 帧本体
        unsigned char frame[FRAME_LENGTH];
        DataFrame();
        const unsigned char* getFrame();

        // 从socket中读取一个帧头
        bool readFrame(SOCKET_T socket_fd)
            ;

        // 使用该对象的frame向socket发送一个帧头
        bool sendFrame(SOCKET_T socket_fd)
            ;

        // 构建并向socket发送一个帧头
        bool sendFrame(SOCKET_T socket_fd, unsigned char flag, unsigned long long length)
            ;

        // 打印对象当前的帧头信息
        void printFrameInfo();

        // 构建一个帧头
        bool buildFrame(unsigned char flag, unsigned long long length);

        // 解析该对象内的帧头数据
        bool parseFrame();

        // 解析date的帧头数据
        bool parseFrame(const unsigned char data[FRAME_LENGTH]);
};

#endif